﻿using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.UI.Bovespa.Alocacao.Communication.Bovespa.Alocacao.NegocioAnulado;

namespace Sinacor.UI.Bovespa.Alocacao.Communication
{
    public class NegocioAnulado : BaseCommunication 
    {
        #region Atributos

        Translator.ModelToDataContract.NegocioAnulado _translatorRequest = null;
        Translator.DataContractToModel.NegocioAnulado _translatorResponse = null;

        #endregion

        #region Construtores

        /// <summary>
        /// Construtor NegocioAlocado
        /// </summary>
        public NegocioAnulado(SessionInformation sessionInformation)
            : base(sessionInformation)
        {
            this._translatorRequest = new Translator.ModelToDataContract.NegocioAnulado();
            this._translatorResponse = new Translator.DataContractToModel.NegocioAnulado();
        }

        #endregion

        /// <summary>
        /// Consulta lista de negócios alocados conforme o filtro de pesquisa
        /// </summary>
        /// <param name="model"></param>
        public ModelCollection<Model.NegocioAnulado> ConsultarNegociosAlocados(Model.Parameter.FiltroNegocioAnulado model)
        {
            INegocioAnulado servico = null;
            ModelCollection<Model.NegocioAnulado> listModels = null;

            try
            {
                using (ServiceInstance<INegocioAnulado> service = new ServiceInstance<INegocioAnulado>())
                {
                    servico = service.TryGetInstance(this.Session);
                    listModels = this._translatorResponse.ToNegocioAnulado
                    (                    
                        servico.ConsultarNegociosAnulados(_translatorRequest.ToFiltroNegocioAnuladoRequest(model))
                    );

                }
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
            }

            return listModels;
        } 

    }
}
